package fangse03;

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {

         /*
       Class类中用于获取成员变量的方法
            Field[] getFields()：                返回所有公共成员变量对象的数组
            Field[] getDeclaredFields()：        返回所有成员变量对象的数组
            Field getField(String name)：        返回单个公共成员变量对象
            Field getDeclaredField(String name)：返回单个成员变量对象

       Field类中用于创建对象的方法
            void set(Object obj, Object value)：赋值
            Object get(Object obj)              获取值

    */
        Class clazz1 = Class.forName("fangse03.Student");
        Field[] fields1 = clazz1.getFields();
        for (Field field : fields1) {
            System.out.println(field);
        }
        System.out.println("----------");
        Field[] fields2 = clazz1.getDeclaredFields();
        for (Field field : fields2) {
            System.out.println(field);
        }
        System.out.println("----------");

        Field name = clazz1.getField("name");
        System.out.println(name);
        System.out.println("----------");
        Field age = clazz1.getDeclaredField("age");
        System.out.println(age);



      /*  Field类中用于创建对象的方法
        void set(Object obj, Object value)：赋值
        Object get(Object obj)              获取值*/

        //获取成员变量记录的值
        Student s = new Student("张三", 18);
        System.out.println(s);
        name.set(s, "李四");
        System.out.println(s);
        Object o = name.get(s);
        System.out.println(o);

    }
}
